Traditional video conferencing systems depend on a server that takes incoming video and re-encodes it to match the capabilities of the receiver. These capabilities include, for example, screen size, computational power, network capacity, and network performance. For example, a well-performing computer with a large display screen and an uncongested network will likely receive full-resolution video, while a computer with lower capabilities might receive less than a full-resolution version of the video. Re-encoding video data is costly in terms of both latency and server resources.